package com.iapcursos.portal.procefet.controle;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.component.UISelectOne;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;

import com.iapcursos.portal.procefet.modelo.beans.entitys.Conteudo;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Pessoa;
import com.iapcursos.portal.procefet.modelo.beans.entitys.TipoConteudo;
import com.iapcursos.portal.procefet.modelo.beans.sessions.interfaces.Sistema;

public class ConteudoPageBean {

	private Conteudo conteudo;
	private List<Conteudo> conteudos;
	private String renderedPanel = "list-content";
	private List<SelectItem> selectItemsTiposConteudo;
	private UISelectOne conteudo_deletar;
	private TipoConteudo tipoConteudo;
	private Pessoa criador;
	private Integer idTipoConteudo;
	private boolean editar;
	
	
	@EJB(mappedName="sistemaBean")
	private Sistema sistema;

	public ConteudoPageBean() {

	}

	@SuppressWarnings("unused")
	@PostConstruct
	private void init(){
		conteudo = new Conteudo();
		tipoConteudo = new TipoConteudo();
		criador = new Pessoa();
	}

	public Conteudo getConteudo() {
		return conteudo;
	}

	public void setConteudo(Conteudo conteudo) {
		this.conteudo = conteudo;
	}

	public List<Conteudo> getConteudos() {
		this.conteudos = sistema.getAllContent();
		return this.conteudos;
	}

	public void setConteudos(List<Conteudo> Conteudos) {
		this.conteudos = Conteudos;
	}

	public String getRenderedPanel() {
		return renderedPanel;
	}

	public void setRenderedPanel(String renderedPanel) {
		this.renderedPanel = renderedPanel;
	}

	public String editarConteudo(){
		int id = Integer.parseInt(this.conteudo_deletar.getValue().toString());	
		this.conteudo = sistema.getConteudoById(id);
		this.editar = true;
		return "editar_conteudo";
	}

	public String novoConteudo(){
		conteudo = new Conteudo();
		tipoConteudo = new TipoConteudo();
		criador = new Pessoa();
		return "novo_conteudo";
	}

	public String deletarConteudo(){
		int id = Integer.parseInt(this.conteudo_deletar.getValue().toString());	
		sistema.removeConteudo(id);
		return "conteudo_deletado";
	}

	public String cancelar(){
		return "voltar_para_lista";
	}

	public List<SelectItem> getSelectItemsTiposConteudo() {
		List<TipoConteudo> tiposConteudo = sistema.getTodosOsTipos();
		selectItemsTiposConteudo = new ArrayList<SelectItem>();

		for (TipoConteudo tiposconteudo : tiposConteudo) {
			selectItemsTiposConteudo.add(new SelectItem(tiposconteudo.getId(), tiposconteudo.getNome()));
		}

		return selectItemsTiposConteudo;
	}

	public void setSelectItemsTiposConteudo(
			List<SelectItem> selectItemsTiposConteudo) {
		this.selectItemsTiposConteudo = selectItemsTiposConteudo;
	}

	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		HttpServletRequest requisicao = (HttpServletRequest) context.getExternalContext().getRequest();
		String loginUsr = requisicao.getUserPrincipal().getName();		
		
		this.criador = sistema.getPessoaByLogin(loginUsr);
		this.tipoConteudo = sistema.getTipoById(this.idTipoConteudo.intValue());
		
		this.criador.addConteudo(this.conteudo);
		this.tipoConteudo.addConteudo(this.conteudo);
		
		this.conteudo.setDataHoraCriation(new Date());		
		this.conteudo.setCriador(this.criador);
		this.conteudo.setTipoConteudo(this.tipoConteudo);
		
		if(this.editar){
			sistema.atualizarConteudo(this.conteudo);
			this.editar = false;
		}else{
			sistema.persistConteudo(this.conteudo);
		}
			
		return "conteudo_salvo_com_sucesso";
	}

	public UISelectOne getConteudo_deletar() {
		return conteudo_deletar;
	}

	public void setConteudo_deletar(UISelectOne conteudo_deletar) {
		this.conteudo_deletar = conteudo_deletar;
	}

	public TipoConteudo getTipoConteudo() {
		return tipoConteudo;
	}

	public void setTipoConteudo(TipoConteudo tipoConteudo) {
		this.tipoConteudo = tipoConteudo;
	}

	public Pessoa getCriador() {
		return criador;
	}

	public void setCriador(Pessoa criador) {
		this.criador = criador;
	}
	
	public Integer getIdTipoConteudo() {
		return idTipoConteudo;
	}

	public void setIdTipoConteudo(Integer idTipoConteudo) {
		this.idTipoConteudo = idTipoConteudo;
	}

	public boolean isEditar() {
		return editar;
	}

	public void setEditar(boolean editar) {
		this.editar = editar;
	}



}
